﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using AutorizacionRESTServices.Dominio;
using System.Data.SqlClient;
using System.Data;

namespace AutorizacionRESTServices.Persistencia
{
    public class SegurosDAO
    {
        public DataSet obtenersql(string sql)
        {
            SqlConnection sqlConn = new SqlConnection(ConexionUtil.Cadena);
            SqlDataAdapter sqlAdapt = new SqlDataAdapter(sql, sqlConn);
            SqlCommandBuilder sqlCmdBuilder = new SqlCommandBuilder(sqlAdapt);
            DataSet sqlSet = new DataSet();
            sqlAdapt.Fill(sqlSet);
            sqlAdapt.Dispose();
            sqlConn.Close();
            return sqlSet;
        }

        public Seguro Obtener(string codigo)
        {
            Seguro seguroEncontrado = null;
            string sql = "SELECT * FROM TB_SEGURO WHERE CODIGO_SEGURO=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", codigo));
                    using (SqlDataReader resultado = com.ExecuteReader())
                    {
                        if (resultado.Read())
                        {
                            seguroEncontrado = new Seguro()
                            {
                                CodigoS = (string)resultado["CODIGO_SEGURO"],
                                CodAU = (string)resultado["CODIGO_AU"],
                                Apro = (string)resultado["APROBACION"],
                                OB_Ge = (string)resultado["OBS_GERENTE"],
                                VB_Teso = (string)resultado["VB_TESORERIA"],
                                OB_Teso = (string)resultado["OBS_TESORERIA"],
                                VB_Seg = (string)resultado["VB_SEGURO"],
                                OB_Seg = (string)resultado["OBS_SEGURO"],
                                EstaSol = (string)resultado["ESTADO_SOL"]
                            };
                        }
                    }
                }
            }
            return seguroEncontrado;
        }

        public Seguro Crear(Seguro seguroACrear)
        {

            Seguro seguroCreado = null;
            string sql = "INSERT INTO TB_SEGURO VALUES(@cods, @codau, @apro, @obgere, @vbteso, @obteso, @vbseg, @obseg, @estasol)";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cods", seguroACrear.CodigoS));
                    com.Parameters.Add(new SqlParameter("@codau", seguroACrear.CodAU));
                    com.Parameters.Add(new SqlParameter("@apro", seguroACrear.Apro));
                    com.Parameters.Add(new SqlParameter("@obgere", seguroACrear.OB_Ge));
                    com.Parameters.Add(new SqlParameter("@vbteso", seguroACrear.VB_Teso));
                    com.Parameters.Add(new SqlParameter("@obteso", seguroACrear.OB_Teso));
                    com.Parameters.Add(new SqlParameter("@vbseg", seguroACrear.VB_Seg));
                    com.Parameters.Add(new SqlParameter("@obseg", seguroACrear.OB_Seg));
                    com.Parameters.Add(new SqlParameter("@estasol", seguroACrear.EstaSol));
                    com.ExecuteNonQuery();  //Luis helder
                }
            }
            seguroCreado = Obtener(seguroACrear.CodigoS);
            return seguroCreado;
        }

        public Seguro Modificar(Seguro seguroAModificar)
        {
            Seguro seguroModificado = null;
            string sql = "UPDATE TB_SEGURO SET CODIGO_AU=@coda, APROBACION=@apro,OBS_GERENTE=@obgere,VB_TESORERIA=@vbteso, OBS_TESORERIA=@obteso,VB_SEGURO=@vbseg, OBS_SEGURO=@obseg,ESTADO_SOL=@estasol WHERE CODIGO_SEGURO=@cods";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cods", seguroAModificar.CodigoS));
                    com.Parameters.Add(new SqlParameter("@coda", seguroAModificar.CodAU));
                    com.Parameters.Add(new SqlParameter("@apro", seguroAModificar.Apro));
                    com.Parameters.Add(new SqlParameter("@obgere", seguroAModificar.OB_Ge));
                    com.Parameters.Add(new SqlParameter("@vbteso", seguroAModificar.VB_Teso));
                    com.Parameters.Add(new SqlParameter("@obteso", seguroAModificar.OB_Teso));
                    com.Parameters.Add(new SqlParameter("@vbseg", seguroAModificar.VB_Seg));
                    com.Parameters.Add(new SqlParameter("@obseg", seguroAModificar.OB_Seg));
                    com.Parameters.Add(new SqlParameter("@estasol", seguroAModificar.EstaSol));
                    com.ExecuteNonQuery();
                }
            }
            seguroModificado = Obtener(seguroAModificar.CodigoS);
            return seguroModificado;
        }

        public void Eliminar(string codigo)
        {
            string sql = "DELETE FROM TB_SEGURO WHERE CODIGO_SEGURO=@cod";
            using (SqlConnection con = new SqlConnection(ConexionUtil.Cadena))
            {
                con.Open();
                using (SqlCommand com = new SqlCommand(sql, con))
                {
                    com.Parameters.Add(new SqlParameter("@cod", codigo));
                    com.ExecuteNonQuery();
                }
            }
        }

        public List<Seguro> ListarTodos()
        {
            List<Seguro> seguros = new List<Seguro>();
            string sql = @"SELECT * FROM TB_SEGURO";
            //BaseDAO dao = new BaseDAO();
            DataSet dataset = obtenersql(sql);
            if (dataset != null)
            {
                if (dataset.Tables[0] != null)
                {
                    if (dataset.Tables[0].Rows.Count > 0)
                    {
                        DataTable dt = dataset.Tables[0];
                        if (dt != null)
                        {
                            if (dt.Rows.Count > 0)
                            {
                                foreach (DataRow row in dt.Rows)
                                {
                                    Seguro seguro = new Seguro();
                                    seguro.CodigoS = row[0].ToString();
                                    seguro.CodAU = row[1].ToString();
                                    seguro.Apro= row[2].ToString();
                                    seguro.OB_Ge = row[3].ToString();
                                    seguro.VB_Teso = row[4].ToString();
                                    seguro.OB_Teso = row[5].ToString();
                                    seguro.VB_Seg= row[6].ToString();
                                    seguro.OB_Seg = row[7].ToString();
                                    seguro.EstaSol = row[8].ToString();
                                    seguros.Add(seguro);
                                }
                            }
                        }
                    }
                }
            }
            return seguros;
            //return null;
        }
    }
}